−<□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□>−


                        「白窓君」プロジェクト


                   「白窓君」デバイスドライバ

                                JLCDDRV.x


                                ver 1.00

                        Copyright 1997 TNB製作所




−<□■□ はじめに □■□>−


 これは、ジョイポートに接続する液晶 LCD 「白窓君」(電子出版)用のドライ

バです。ですので、「白窓君」がなければ意味の無いソフトです。




−<□■□ 登録 □■□>−


        使用法:JLCDDRV.x [PORT] [switch]

                /K[n] ・・・・・ 機能のシフトキー設定。(def.16 = [XF5])
                                [XF1]=1 : [XF1]=2 : [XF3]=4 : [XF4]=8
                                [XF5]=16 : [SHIFT]=32 : [CTRL]=64
                                [OPT1]=128 : [OPT2]=256

                /J ・・・・・・・・ 日本語表示にします。(def.)
                /E ・・・・・・・・ 英語表示にします。

                /N ・・・・・・・・ KEY割り込みは使いません。(def.)
                /M ・・・・・・・・ KEY割り込みを使う。

                /ON ・・・・・・・ 「白窓君」を使用します。
                /OF ・・・・・・・ 停止します。

                /R ・・・・・・・・ 常駐解除します。


        [PORT] は使用したい JOYSTICK PORT を指定します。デフォルト
        では 2 を使用します。

        /K は JLCDDRV で使用するシフトキーを指定します。デフォル
        トは [XF5] です。ですので、時計、ストップウォッチ切り換え
        する時は [XF5] 押しながら [UNDO] を押す、ということになり
        ます。

        /J /E は白窓エラーの時に出るメッセージの言葉を選択します。
        それ以外には影響しません。デフォルトは日本語(カタカナ)で
        す。

        /M /N は MFP 割り込みでキーチェックを行うかの選択です。/M 
        の場合、割り込みでチェックするのでストップウォッチ等は X68k 
        が何をしていても押したタイミングでコントロールすることが
        出来ます。/N の場合、キー入力チェックをしている時、キーチ
        ェックを行うのでキー入力の無いソフトを動かしているとキーチ
        ェックがなかなか行われない可能性もあります。基本的に /N で
        いいと思います。

        /ON /OF は LCD の動作モードを設定します。/OF で機能停止し
        ます。/ON で再開します。また、/ON では JOY PORT の設定、及
        び「白窓君」の初期化をしますので、「白窓君」を抜き差しした
        場合など、画面が乱れた場合にも使用して下さい。シフトキー
        + [BS] による操作は、/ON /OF を繰り返しているのと同じです。
        常駐時は設定出来ません。


         CONFIG.SYS の DEVICE= でも登録出来ます。コマンドライン

        から登録した場合、メインスレッド以外の白窓は「白窓君」に

        表示しません。




−<□■□ 操作 □■□>−


 JLCDDRV.x は登録しただけでも、「白帯」と日付時計として動いていますが、

ストップウォッチも付いています。その操作も含め一覧しておきます。シフトキー

は /K で設定するキーでデフォルトでは [XF5] です。


        シフトキー+[UNDO]
                モード選択。トルグになります。
                        ・時計
                        ・ストップウォッチ

        シフトキー+[ROLLUP]
                ストップウォッチモードのみ有効です。スタート、停止、再ス
                タートボタンです。

        シフトキー+[ROLLDOWN]
                ストップウォッチモードで停止時、時間を初期化します。
                それ以外は反応無しです。

        シフトキー+[BS]
                表示のオン/オフを行います。また、「白窓君」の初期化も行
                います。オフになった時は JOYPORT を解放するので問題のあ
                るソフト(後述)の場合、止める様にして下さい。スイッチ
                /ON /OF と同じ機能です。オフにしていてもストップウォッチ
                は動いています。




−<□■□ IOCS □■□>−


 JLCDDRV.x は単体でも白窓、時計と動きますが、サービスコールを使うことで、

ユーザーが(比較的)自由に使うことが出来ます。

 コールに付いては別ファイル、「JLCDCALL.mac」に記述されています。ここで

は簡単な流れを書いておきます。

 「白窓君」用のソフトには2つ考えられます。

 一つは、「白窓君」をそのソフトが占領してしまうものです(占領型ソフト)。

デフォルトの時計のようなものです。

 もう一つは一時的にメッセージを表示させるソフトです(メッセージ型ソフト)。

メッセージを表示させておく時間を指定できます。あるいは一部を借りて表示

させることも出来ます(占領ソフトとの兼ね合いで消されることもありますが)。


 占領型のソフトの場合

        ・JLCDDRV があるかチェック。
                _JLCD_VER を使用して JLCDDRV があるか、チェックします。
        ・既に占領しているソフトはないかチェックします。
                        moveq   #-1,d2
                        JLCD    _JLCD_INIT
                もし、他で使っていたら占領できせん。
        ・占領します。
                        moveq   #1,d2
                        JLCD    _JLCD_INIT

        ・いろいろ表示します。占領ソフトの場合 _JLCD_PRINT を使用します。
         メッセージ型ソフトが動いて画面を破壊する(書き替える)可能性も
         ありますので、定期的に
                        moveq   #0,d2
                        JLCD    _JLCD_INST
         とし、画面が破壊されていないかチェックし破壊されていたら全文字
         表示し直して下さい。
         また、メッセージ型ソフトのメッセージが書かれている間は _JLCD_PRINT
         で表示出来ません(エラー -1 がきます)。もし、必ず表示しないと
         行けないものであれば、空ループし再度コールして下さい。

        ・終了時は
                        moveq   #0,d2                   * 占領
                        JLCD    _JLCD_INIT
         と時計に直して下さい。


                同梱のサンプル、JLCDCDC.x のソースも参考にして下さい。


 メッセージ型のソフトの場合

        ・JLCDDRV があるかチェック。
                _JLCD_VER を使用して JLCDDRV があるか、チェックします。

        ・表示したいメッセージを時間を決めて書きます。
                        move.l  #$80000000,d2                   * CLR & (0,0) から
                        move.l  #300,d3                         * 3秒間!
                        lea.l   mes,a1
                        JLCD    _JLCD_PRINT2
         これだけです。


                同梱のサンプル、JLCDV.x のソースも参考にして下さい。


         また、表示時間を指定しない(0 を指定)方法もあります。時計の場
        合、2行目の左の方が開いているので、ここに1文字ばかりを表示させ
        ることが出来ます。表示時間を指定しないと、破壊したとされないので
        基本的に占領ソフトは書き直ししませんので、も残ることになります。


                同梱のサンプル、JLCDCON1.x のソースも参考にして下さい。




−<□■□ 同梱サンプル □■□>−


 サンプルとして3つ同梱しておきます。

        JLCDV.x                 簡易メッセージ表示
        JLCDCON1.x              CRT 表示文字モニタ
        JLCDCDC.x               CDC LED 表示


        -< JLCDV.x >-

         これは、「白窓君」にメッセージを表示させるソフトです。2行 16文字
        を単純に表示します。CONFIG.SYSの DEVICE でも使用可能ですが、空白文
        字(char code $20)が複数列べても1つになってしまうことに注意して
        下さい。
         JLCDV.x はメッセージ型のソフトで 3秒間メッセージを表示し元に戻す
        ソフトです。 3秒というのは固定です。アセンブルし直せば変更出来ます。
        なお、CONFIG.SYS 登録中は JLCDDRV.x が連続的に機能しないので 3秒で
        LCD 表示が戻らないことがあります。

         僕の環境では CONFIG.SYS で
                DEVICE = ¥SYS¥JLCDDRV.x 2 -E
                        :
                DEVICE = ¥SYS¥JLCDV.x 「CONFIG」トウロクチュウ ・・・・・・ SCSI-IOCS
                        :
                DEVICE = ¥SYS¥JLCDV.x 「CONFIG」トウロクチュウ ・・・・・・・・・・ Codiy
                        :
        となってます。


        -< JLCDCON1.x >-

         これは、ディスプレイに表示される文字、一文字だけを「白窓君」に表
        示させるソフトです。DOS _PUTCHAR _PRINT _FPUTC _FPUTS を使われる文
        字列に限ります。
         これはディスプレイを消していても、例えば圧縮作業が動いているかな
        ど見るために作ってみましたが、余り使えません ^^; 。

         JLCDCON1.x はメッセージ型のソフトで、表示時間を指定しない(0 を
        指定)サンプルになっています。


        -< JLCDCDC.x >-

         これは、TNB製作所の CDC.x の LED を「白窓君」にも表示させようと
        いうものです。本ソフトを常駐する前に JLCDDRV.x と CDC.x を登録する
        必要があります。
         残念ながらタイトル名などの表示は出来ません。
         JLCDCDC.x は占領型のソフトです。




−<□■□ インストラクション □■□>−


 JLCD コールの _JLCD_INST で与えられる命令を一覧します。



        %00000001       全画面をクリアします。

        %00000010       表示座標を $00 にし、表示座標も元へ戻します。表示
                        内容は変化しません。

        %000001XS       カーソルの進む方向、表示をシフトするかの設定を行い
                        ます。
                                        X=0 ; デクリメント
                                        X=1 ; インクリメント(def.)
                                        S=0 ; シフトしません(def.)
                                        S=1 ; 表示シフトします。
                        (注)JLCD CALL の表示ルーチンは「シフト」に対応し
                           ていません。

        %00001DCB       全表示の ON/OFF、カーソルの ON/OFF、カーソル位置の
                        文字のブリンク、を設定します。
                                        D=0 ; 表示を消す
                                        D=1 ; 表示します(def.)
                                        C=0 ; カーソルを表示しない(def.)
                                        C=1 ; カーソルを表示する
                                        B=0 ; 文字のブリンク無し(def.)
                                        B=1 ; 文字のブリンクあり

        %0001SM00       表示内容を変えずにカーソル(表示座標)の移動、表示
                        のシフトを行います。
                                        S=0 ; カーソルの移動
                                        S=1 ; 表示のシフト
                                        M=0 ; 右シフト/右移動
                                        M=1 ; 左シフト/左移動


        補足)「シフト」に付いて。LCD 内部は 40文字 x 2行 のメモリがありま
                す。内、普通表示されているのが 16文字 x 2行 です。その表示
                場所を変えるのが「シフト」です。現在 JLCDCALL ではこのシフ
                トを考慮していないので、このシフトを使い表示させるにはコツ
                がいります。16文字以降 の表示は JLCD_PRINT/2 の座標を指定
                して書く用にして下さい。普通に連続して書こうとしても、改行
                してしまいます。




−<□■□ 8255 □■□>−


 「白窓君」は JOY PORT に繋ぎ、JOY PORT からデータを出力して表示させてい

ます。そのため、8255 のモードを普段と変えています。なので、JLCDDRV.x で宣

言した PORT はそのままではジョイスティックを繋いでも反応しません。


 ジョイスティックの状態を得る方法は X68k では2通りあります。一つは IOCS

の _JOYGET を使う方法と、直接 I/O ポートを見に行く方法です。


 普通、IOCS _JOYGET を使っているソフトは JLCDDRV が動いていても問題ありま

せん。ただし、「白窓君」を抜き、ジョイスティックをさしても反応しません。で

すので、ジョイスティック2つ使うソフトを実行する場合、JLCDDRV.x を停止する

といいでしょう。バッチファイルなら

                        JLCDDRV.x -OF
                        ソフト.x
                        JLCDDRV.x -ON

というようにしておけばいいでしょう。この時、「白窓君」は抜きましょう。


 直接 I/O ポートを見にいくソフトの場合、「白窓君」が誤作動する可能性があ

ります。JLCDDRV を停止させていても誤作動することがあります(誤作動といって

も壊れるわけではありません。表示がおかしくなるだけです)。また、「白窓君」

が刺さっていると、ジョイスティックが押されている判定になったりするので、抜

いたほうがいいでしょう。




−<□■□ ハード □■□>−


 「白窓君」でしようしている液晶 LCD は NDM162 というものなのですが、これは

本当は相互通信で例えば、表示している文字の情報を NDM162 から得ることも出来

るのですが、X68k の JOYPORT の仕様で、X68k -> NDM162 という情報伝達しか出

来ません。JOYSTICK PORT 1 専用にしたら可能でしたが・・・。

 ですので、タイミングは Wait で取ってますし、「白窓君」接続チェックもソフ

トでは分かりませんでした。

 また、「白窓君」が刺さっているとソフトによって、ジョイスティックのボタン

が押された判定になってしまう仕様もダイオード等を入れることで解決出来るらし

いのですが、今の「白窓君」ではそうなっていません。




−<□■□ 注意 □■□>−


 TNB製作所は JLCDDRV.x の著作権を保持します。

 TNB製作所は この JLCDDRV.x によるトラブルは一切責任を負わないものとし

ます。個人の責任において使用して下さい。

 バグ、トラブルの御報告はぜひお願いします。出来る限り対処、対応していきま

す。




−<□■□ 使用,参考ツール,参考ドキュメント □■□>−


        *  SUPERED.X ver 1.18  T.Nishikawa氏作
        *  has.x ver 3.08  YuNK氏作
        *  hlk.x ver 3.01  SALT氏作

 白帯のメッセージ(日本語、英語とも)は満開の鎌田氏に用意して頂きました。

ありがとうございました。




−<□■□ 連絡先 □■□>−


 バグ、要望などありましたら、以下までお願いします。


        Mankai Net (03-3985-6227)       [69] たんぼ
        Sunday-Net (03-5467-5911)       [sun4882] たんぼ
        電脳遊技帝国 (0297-62-5149)     [268] たんぼ


   〒171 東京都豊島区西池袋 5-17-11 ルート西池袋ビル 901号

                満開製作所内

                                電子出版  代表 中村隆生

                        あるいは

                                TNB製作所  所長 たんぼ


(EOF)